<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;


class ShopController extends Controller
{
    // index
    public function getIndex(Request $request)
    {
        // 查询数据库
        $data = DB::table('shop') 
            -> select('shop.*', 'user.name as user_name')
            -> join('user', 'shop.user_id', '=', 'user.id')
            -> where('shop.name', 'like', '%'.$request -> input('keyword').'%')
            -> paginate($request -> input('num', 10));
        // dd($data);
        return view('admin.shop.index', ['data' => $data, 'request' => $request -> all()]);
    }

    // Ajaxname 修改店铺名
    public function postAjaxname(Request $request)
    {
        // 查询店铺名是否存在
        $res = DB::table('shop') -> where('name', $request -> input('name')) -> first();
        if($res)
        {
            // 9, 表示用户名已经存在
            return response() -> json(9);
        }else
        {
            // 修改店铺名
            $r = DB::table('shop') -> where('id', $request -> id) -> update(['name' => $request -> name]);
            if($r)
            {
                return response() -> json(1);
            }else
            {
                return response() -> json(0);
            }
        }
    }


    // add
    public function getAdd()
    {
        // 查数据库
        $data = DB::table('shop') 
            -> select('user.name as user_name', 'user.id as user_id')
            -> join('user', 'shop.user_id', '=', 'user.id')
            -> get();
            // dd($data); 

        return view('admin.shop.add', ['data' => $data]);
    }

    // insert
    public function postInsert(Request $request)
    {
        // dd($request -> all());
        $data = $request -> except('_token');
        // dd($data);
        $name = $request -> input('name');
        // 查询店铺名是否存在
        $r = DB::table('shop') -> where('name', $name) -> first();
        // dd($res);
        if($r)
        {
             return redirect('/admin/shop/add') -> with(['info' => '店铺名已存在']);
        }else
        {
            // $r = DB::table('shop') -> insert($)
            // 判断文件是否上传
            if ($request->hasFile('img')) {

                // 验证上传文件是否有效
                if ($request->file('img')->isValid()) {

                    // 获取文件后缀格式名
                    $suffix = $request -> file('img') -> getClientOriginalExtension();

                    // 随机一个文件名称
                    $fileName = md5(time().mt_rand(100000, 999999)).".".$suffix;

                    // 将文件保存到本地
                    $request->file('img')->move('./shopimg', $fileName);

                    // 将图片路径放入数组中
                    $data['img'] = $fileName;
                    // unset($data['oldImg']);
                    // dd($data);

                    // 将数据保存到数据库
                    $res = DB::table('shop') -> insert($data);
                    // 判断结果集
                    if($res)
                    {
                        return redirect('/admin/shop/index') -> with(['info' => '店铺添加成功']);
                    }else
                    {
                        return back() -> with(['info' => '店铺修改失败']);
                    }
                }else
                {
                    return redirect('/admin/shop/add') -> with(['info' => '店铺头像上传失败,请重试']);                    
                }
            }else
            {
                return redirect('/admin/shop/add') -> with(['info' => '没有上传店铺头像']);
            }

        }
    }


    // edit
    public function getEdit($id, $user_name)
    {
        // dd($id.'--------'.$user_name);
        // 查询数据库
        $data = DB::table('shop') -> where('id', $id) -> first();
        $data -> user_name =  $user_name;
        // dd($data);
        return view('admin.shop.edit', ['data' => $data]);
    }

    // update
    public function postUpdate(Request $request)
    {
        // dd($request -> all());
        $data = $request -> except('_token', 'user_name');
        // dd($data);
           // 判断文件是否上传
        if ($request->hasFile('img')) {

            // 验证上传文件是否有效
            if ($request->file('img')->isValid()) {

                // 删除老图片
                $oldImg = "./shopimg/".$request -> all()['oldImg'];
                if(file_exists($oldImg))
                {
                    unlink($oldImg);
                }

                // 获取文件后缀格式名
                $suffix = $request -> file('img') -> getClientOriginalExtension();

                // 随机一个文件名称
                $fileName = md5(time().mt_rand(100000, 999999)).".".$suffix;

                // 将文件保存到本地
                $request->file('img')->move('./shopimg', $fileName);

                // 将图片路径放入数组中
                $data['img'] = $fileName;
                unset($data['oldImg']);
                // dd($data);

                // 将数据保存到数据库
                $res = DB::table('shop') -> where('id', $data['id']) -> update($data);
                // 判断结果集
                if($res)
                {
                    return redirect('/admin/shop/index') -> with(['info' => '店铺修改成功']);
                }else
                {
                    return back() -> with(['info' => '店铺修改失败']);
                }
            }
        }else
        {
            // 修改老图片的键名
            $data['img'] = $request -> all()['oldImg'];
            // $data = $data -> except('oldImg');
            unset($data['oldImg']);

            // dd($data);

            // 将数据从数据库中修改
            $res = DB::table('shop') -> where('id', $data['id']) -> update($data);
            // 判断结果集
            if($res)
            {
                return redirect('/admin/shop/index') -> with(['info' => '店铺修改成功']);
            }else
            {
                return back() -> with(['info' => '店铺修改失败']);
            }
        }
    }


    // delete
    public function getDelete($id)
    {
        // 查询数据库,获取店铺头像
        $img = './shopimg/'.DB::table('shop') -> select('img') -> where('id', $id) -> first() -> img;

        // 删除店铺
        $res = DB::table('shop') -> delete($id);
        if($res)
        {
            // 判断图片是否存在,删除图片
            if(file_exists($img))
            {
                unlink($img);
            }

            return redirect('/admin/shop/index') -> with(['info' => '店铺删除成功']);

        }else
        {
            return back() -> with(['info' => '店铺删除失败']);
        }

    }
}
